package com.tange.ai.iot.client.gnssa.utils

import android.content.Context
import java.io.File
import java.io.IOException
import java.io.FileInputStream
import java.io.FileOutputStream

class CacheFileManager {

    /**
     * 将文件复制到应用的缓存目录
     *
     * @param context 上下文对象
     * @param sourceFile 要复制的源文件
     * @param cacheFileName 缓存目录中的文件名
     * @return 复制后的缓存文件，如果失败返回null
     */
    fun copyFileToCache(context: Context, sourceFile: File, cacheFileName: String): File? {
        return try {
            // 1. 验证源文件
            if (!sourceFile.exists() || !sourceFile.isFile) {
                return null
            }

            // 2. 获取缓存目录并创建目标文件
            val cacheDir = context.cacheDir
            val cacheFile = File(cacheDir, cacheFileName)

            // 3. 复制文件内容
            FileInputStream(sourceFile).use { inputStream ->
                FileOutputStream(cacheFile).use { outputStream ->
                    val buffer = ByteArray(8192) // 8KB缓冲区
                    var bytesRead: Int

                    while (inputStream.read(buffer).also { bytesRead = it } != -1) {
                        outputStream.write(buffer, 0, bytesRead)
                    }
                }
            }

            // 4. 返回复制后的文件
            cacheFile
        } catch (e: Exception) {
            e.printStackTrace()
            null
        }
    }

}